package com.dhcc.DRGsHosp.facade;

import java.util.List;
import java.util.Map;

import org.openkoala.koala.commons.InvokeResult;

import com.dhcc.DRGsHosp.facade.dto.IndexCalDTO;

/**
 * 
 * @ClassName: DrgsIndexCalFacade  
 * @Description ：    指标计算的总线程算法
 * @Date: 2017年5月18日 下午4:59:47  
 * @Author LiuHongJun 
 * @Version 2.5.0 DHC-DRGs
 */
public interface DrgsIndexCalFacade {

/**
 * 
 *  indexCal.  
 *  @Description：指标计算
 *  @Author LiuHongjun
 *  @param dto
 *  @return 
 *  @Date:2017年5月19日上午10:17:45
 */
	public List<Map<String,Object>>  indexCal(IndexCalDTO dto);
	/**
	 * 
	 *  getManageYear.  
	 *  @Description：获取管理标杆年份
	 *  @Author LiuHongjun
	 *  @param mrDate
	 *  @return 
	 *  @Date:2017年5月19日上午11:45:52
	 */
	String getManageYear(IndexCalDTO dto);
	/**
	 * 
	 *  avgHospIndexCal.  
	 *  @Description：获取院内均值
	 *  @Author LiuHongjun
	 *  @param dto
	 *  @return 
	 *  @Date:2017年6月9日上午10:45:56
	 */
	public List<Map<String,Object>>  avgHospIndexCal(IndexCalDTO dto);
	/**
	 * 
	 *  findCaseList.  
	 *  @Description：获取病例明细
	 *  @Author LiuHongjun
	 *  @param dto
	 * @param sEcho 
	 * @param pageSize 
	 * @param page 
	 * @param isAllUsers 
	 *  @return 
	 *  @Date:2017年6月13日下午4:00:11
	 */
	public InvokeResult findCaseList(IndexCalDTO dto, Boolean isAllUsers, int page, int pageSize, int sEcho, int caseTotalCount,String orderColumn,String orderMethod);
	
	/**
	 * 
	 *  findImportedCaseList.  
	 *  @Description：获取已导入病例明细
	 *  @Author mazhaoyan
	 *  @param dto
	 *  @param isAllUsers
	 *  @param page
	 *  @param pageSize
	 *  @param sEcho
	 *  @param caseTotalCount
	 *  @return 
	 *  @Date:2017年7月12日下午9:17:12
	 */
	public InvokeResult findImportedCaseList(String type2,String date, int page, int pageSize, int sEcho, int caseTotalCount, String orderColumn, String orderMethod);
	/**
	 * 
	 *  findImportedHcCaseList.  
	 *  @Description：获取已导入医保病例明细
	 *  @Author ZouYiyu
	 *  @param type2
	 *  @param date
	 *  @param page
	 *  @param pageSize
	 *  @param sEcho
	 *  @param caseTotalCount
	 * @param orderMethod 
	 * @param orderColumn 
	 *  @return 
	 *  @Date:2017年7月20日下午7:26:28
	 */
	public InvokeResult findImportedHcCaseList(String type2,String date, int page, int pageSize, int sEcho, int caseTotalCount, String orderColumn, String orderMethod);
	/**
	 * 
	 * @methodname    :releateQuotas
	 * @description   : 查询关联指标
	 * @param         :
	 * @author        : chenhanlin
	 * @return        :
	 * @date          :2017年06月23日
	 */
	List<Object[]> releateQuotas(String quotaCode);
	
	/**
	 * 
	 *  getLatestDate.  
	 *  @Description：获得出院病历的分组的最新日期
	 *  @Author LiuHongjun
	 *  @return 
	 *  @Date:2017年6月26日上午5:57:27
	 */
	public String getLatestDate();
	
	/**
	 * 
	 * @methodname    :getManageSummary
	 * @description   : 获取外部标杆信息
	 * @param         :msType 标杆类型 1 绩效标杆 2 外院标杆
	 * @author        :mazhaoyan
	 * @return        :
	 * @date          :2017年6月28日
	 */
	public InvokeResult getManageSummary(String msType);
	/**
	 * 
	 *  getGroupAllYears.  
	 *  @Description：获取分组数据有哪些年份的数据
	 *  @Author LiuHongjun
	 *  @return 
	 *  @Date:2017年6月29日下午1:40:37
	 */
	public InvokeResult getGroupAllYears(IndexCalDTO dto);
	/**
	 * 
	 *  getTrendData.  
	 *  @Description：获取趋势图分析数据
	 *  @Author LiuHongjun
	 *  @param dto
	 *  @return 
	 *  @Date:2017年8月12日上午11:00:45
	 */
	public InvokeResult getTrendData(IndexCalDTO dto);
	/**
	 *  @desp  ：获取标杆定位id
	 *  @Author： lhj
	 *  @param dateFrom 开始时间
	 *  @param dateTo 结束时间
	 *  @return
	 *  @Date  :2018年1月4日上午10:19:12
	 */
	public String getStdID(String dateFrom, String dateTo);
	
	/**
	 *  @desp  ：获取分组方案
	 *  @Author： lhj
	 *  @return
	 *  @Date  :2018年1月9日上午11:29:31
	 */
	public String getGroupScheme();
	
	/**
	 *  @desp  ：监测当前分组方案以及监测时间范围内分组器版本号 
	 *  @Author： lhj
	 *  @param dto
	 *  @return
	 *  @Date  :2018年1月27日上午9:32:05
	 */
	public  List<Map<String, Object>>  checkVerVersion(IndexCalDTO dto);
	/**
	 *  @desp  ：获取当前分组版本号
	 *  @Author： lhj
	 *  @param dateFrom 开始时间
	 *  @param dateTo 结束时间
	 *  @return
	 *  @Date  :2018年1月29日上午9:04:16
	 */
	public String getVerCode(String dateFrom, String dateTo);
	/**
	 *  @desp  ：根据医院编码获取科室组
	 *  @Author： lhj
	 *  @param hospCode
	 * @param depGroupCode 
	 *  @return
	 *  @Date  :2018年1月29日下午7:56:05
	 */
	public  List<Map<String, Object>> getDepGroupByCode(String hospCode, String depGroupCode);
	/**
	 *  @desp  ：获取病区
	 *  @Author： lhj
	 *  @param hospCode
	 * @param wardCode 
	 * @param depGroupCode 
	 *  @return
	 *  @Date  :2018年1月29日下午7:59:30
	 */
	public  List<Map<String, Object>> getWardByCode(String hospCode, String depGroupCode, String depCode, String wardCode);
	/**
	 * 
	 *  @desp  ：获取各级医师
	 *  @Author： lhj
	 *  @param dto
	 *  @return
	 *  @Date  :2018年2月2日下午5:03:00
	 */
	public  List<Map<String, Object>> getDoctor(IndexCalDTO dto);
	/**
	 * @methodname    :findCaseListGlobal
	 * @description   :系统全局搜索病例
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2018年1月29日
	 */
	public InvokeResult findCaseListGlobal(String filterStr);
	/**
	 * @methodname    :deleteCase
	 * @description   :删除系统病例
	 * @param         :
	 * @author        :lileizheng
	 * @return        :
	 * @date          :2018年1月30日
	 */
	public InvokeResult deleteCase(String parid);
	/**
	 *  @desp  ：获取折线图全部数据
	 *  @Author： liuhongjun
	 *  @param dto
	 *  @return
	 *  @Date  :2018年3月8日下午4:40:08
	 */
	public InvokeResult findTrendData(IndexCalDTO dto);
	/**
	 *  @Discription：检测系统是否含有病组的绩效管理值
	 *  @Author： liuhongjun
	 *  @return
	 *  @Date:2018年3月21日下午2:18:55
	 */
	public boolean isDrgManager();

	/**
	 *  查询分析报告sql
	 *  findSQLAnalysisreport.
	 *  @Description：
	 *  @Author ChenHanlin
	 *  @param codeSql
	 *  @param templateCode
	 *  @param chaper
	 *  @param section
	 *  @return
	 *  @Date:2018年6月19日下午1:31:13
	 */
	public String findSQLAnalysisreport(String codeSql,String templateCode,String chaper,String section) ;
	
	/**
	 * 
	 *  @Discription：获取病例表中的最大时间
	 *  @Author： ：fulianxia
	 *  @return
	 *  @Date:2018年12月27日
	 */
	public InvokeResult getLatestPatientDate();

}

